📖 Arquitetura Completa: Do AD à GPU na Nuvem
Este guia prático ensina a construção de uma plataforma completa para empresas modernas, integrando gestão de identidade (Active Directory), orquestração de containers (Kubernetes via Rancher), networking avançado (Calico), aceleração por GPU, mensageria JMS (Hermes), registo de imagens (Harbor) e backup resiliente (Velero). Tudo sobre Ubuntu Server.
🎯 Pré-requisitos para seguir este guia:
- Servidor físico ou VM com Ubuntu Server 24.04 LTS (mínimo 8GB RAM, 4 vCPUs, 100GB SSD).
- Para GPU Operator: NVIDIA GPU compatível (ex: Tesla T4, A100, RTX).
- Acesso à internet para download de pacotes e imagens Docker.
- Conhecimentos básicos de terminal e administração Linux.
✅ Resultado final: Um ambiente empresarial completo com autenticação AD, cluster Kubernetes gerido via Rancher, registo privado de imagens, capacidade GPU e backup automatizado.
🖥️ Passo 1: Servidor Ubuntu com Active Directory
Base de toda a infraestrutura: servidor Ubuntu e controlador de domínio Samba.
1.1 Instalação do Ubuntu Server
# Descarregar ISO do Ubuntu 24.04 LTS e instalar com as opções:
- Idioma: Português (Portugal) ou English
- OpenSSH Server: Sim
- Utilizador administrador: criar (ex: "admin")
1.2 Configurar IP Fixo (Netplan)
sudo nano /etc/netplan/00-installer-config.yaml
# Exemplo para IP fixo 192.168.1.100
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply
1.3 Instalar Samba como Domain Controller
sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname srvad.exemplo.pt
echo "127.0.1.1 srvad.exemplo.pt srvad" | sudo tee -a /etc/hosts
# Instalar pacotes
sudo apt install -y samba krb5-user krb5-config winbind
# Provisionar domínio (responder interativamente)
sudo samba-tool domain provision --use-rfc2307 --interactive
# Realm: EXEMPLO.PT
# Domain: EXEMPLO
# Server Role: dc
# DNS backend: SAMBA_INTERNAL
# Ativar serviço
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc
✅ Verificação: sudo systemctl status samba-ad-dc e sudo smbclient -L localhost -N
📌 Integração Linux com AD: Para clientes Linux aderirem ao domínio, usar realm join --user=Administrador exemplo.pt após instalar pacotes realmd sssd adcli.[citation:1][citation:8]
☸️ Passo 2: Rancher Server e Cluster Kubernetes
Rancher simplifica a gestão de múltiplos clusters Kubernetes. Vamos instalar o Rancher via Docker e criar um cluster K3s ou RKE2.
2.1 Instalar Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker
2.2 Executar Rancher Server
sudo docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
rancher/rancher:latest
# Acesso: https://
# Obter password inicial:
sudo docker logs 2>&1 | grep "Bootstrap Password"
2.3 Criar Cluster Kubernetes via Rancher UI
1. Aceder a https://:443
2. Definir password admin
3. Em "Cluster Management" -> "Create Cluster"
4. Escolher "Custom" (para nós Ubuntu existentes)
5. Dar nome ao cluster (ex: "prod-cluster")
6. Copiar comando docker run gerado e executar em cada nó worker
🔗 Alternativa: Para instalação rápida K3s: curl -sfL https://get.k3s.io | sh - e depois importar via Rancher.[citation:9]
🌐 Passo 3: Instalar Calico como CNI
Calico oferece networking de alto desempenho, Network Policies e suporte a eBPF.[citation:3][citation:10]
3.1 Verificar versão Kubernetes
kubectl version --short
3.2 Instalar Operator do Calico
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28/manifests/tigera-operator.yaml
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28/manifests/custom-resources.yaml
3.3 Verificar instalação
kubectl get pods -n calico-system
# Esperar até todos os pods em Running
kubectl get nodes -o wide
⚠️ Atenção: Se o cluster foi inicializado com kubeadm, use --pod-network-cidr=192.168.0.0/16 no init para compatibilidade com Calico.[citation:10]
🎮 Passo 4: NVIDIA GPU Operator
Automatiza a instalação de drivers e ferramentas CUDA nos nós com GPUs NVIDIA.[citation:4]
4.1 Pré-requisitos (nó com GPU)
# Verificar se GPU é detetada pelo sistema
lspci | grep -i nvidia
# Instalar device plugin runtime
sudo apt install -y nvidia-container-toolkit
4.2 Instalar GPU Operator via Helm
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator
4.3 Validar instalação
kubectl get pods -n gpu-operator
kubectl logs -n gpu-operator-resources -l app=nvidia-operator-validator
# Procurar: "all validations are successful"[citation:4]
🚀
Teste com workload GPU:
kubectl run gpu-test --rm -it --restart=Never --image=nvidia/cuda:12.0-base -- nvidia-smi
📨 Passo 5: HermesJMS para Teste de Filas JMS
HermesJMS é uma ferramenta gráfica para inspecionar e enviar mensagens para filas JMS (ActiveMQ, IBM MQ, SAP PO).[citation:5]
5.1 Instalação no Ubuntu Desktop (ou servidor com X11)
# Descarregar HermesJMS (versão incluída no SoapUI)
wget https://www.soapui.org/downloads/soapui/ -O soapui-latest.sh
chmod +x soapui-latest.sh
./soapui-latest.sh
# O Hermes estará em /opt/SoapUI-/hermesJMS/
cd /opt/SoapUI-*/hermesJMS/bin
./hermes.sh
5.2 Configurar sessão para ActiveMQ/SAP PO
No Hermes:
1. Criar nova sessão
2. Em "Providers" -> Adicionar grupo -> Adicionar JARs (clientes JMS específicos)
3. Configurar ConnectionFactory com JNDI
4. Adicionar filas (Queues) para teste
5. Enviar mensagens de texto ou XML para validação[citation:5]
💡 Caso de uso: Hermes permite testar integrações empresariais sem necessidade de aplicações completas, validando conectividade e formato de mensagens.
📦 Passo 6: Harbor Registry Privado
Harbor é um registry de containers com segurança, scanning e replicação geo-distribuída.[citation:6]
6.1 Instalar Harbor via Helm no Kubernetes
helm repo add harbor https://helm.goharbor.io
helm upgrade --install harbor harbor/harbor \
--namespace harbor --create-namespace \
--set expose.type=nodePort \
--set expose.tls.enabled=false \
--set persistence.enabled=true
6.2 Aceder e configurar
# Obter URL do Harbor
kubectl get svc -n harbor
# Aceder a http://:30002
# Login: admin / Harbor12345
# Criar projeto (ex: "empresa")
6.3 Fazer login e push de imagens
docker login :30002 -u admin
docker tag nginx:latest :30002/empresa/nginx:latest
docker push :30002/empresa/nginx:latest
🔒 Para produção, configure HTTPS com certificados válidos e ative o scanning de vulnerabilidades do Harbor.
💾 Passo 7: Velero Backup e Restore de Kubernetes
Velero permite backup de recursos e volumes persistentes para object storage (S3, MinIO, GCS).[citation:7]
7.1 Instalar MinIO (backend S3 local)
helm repo add minio https://charts.min.io
helm upgrade --install minio minio/minio \
--namespace velero --create-namespace \
--set rootUser=minioadmin \
--set rootPassword=minioadmin123 \
--set buckets[0].name=velero,buckets[0].policy=none
7.2 Instalar Velero CLI
wget https://github.com/vmware-tanzu/velero/releases/download/v1.14.1/velero-v1.14.1-linux-amd64.tar.gz
tar -xzf velero-v1.14.1-linux-amd64.tar.gz
sudo mv velero-v1.14.1-linux-amd64/velero /usr/local/bin/
7.3 Configurar credentials e instalar Velero
cat > credentials-velero << EOF
[default]
aws_access_key_id = minioadmin
aws_secret_access_key = minioadmin123
EOF
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.10.0 \
--bucket velero \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000 \
--snapshot-location-config region=minio \
--secret-file ./credentials-velero
7.4 Criar backup e restaurar
# Backup de namespace "aplicacao"
velero backup create app-backup --include-namespaces aplicacao
# Verificar status
velero backup describe app-backup
# Simular disaster recovery
kubectl delete namespace aplicacao
velero restore create --from-backup app-backup
✅ Backup agendado: velero schedule create daily-backup --schedule="0 2 * * *" --include-namespaces aplicacao
🔗 Passo 8: Integração de todos os componentes
Com todos os componentes instalados, temos uma stack empresarial completa:
| Componente | Função | Interação |
| Samba AD | Autenticação | Utilizadores do domínio acedem aos recursos Kubernetes via RBAC integrado com LDAP |
| Rancher + Calico | Orquestração e Rede | Rancher gere clusters multi-cloud, Calico assegura Network Policies e segurança pod-to-pod |
| GPU Operator | Aceleração IA/ML | Workloads de ML (PyTorch, TensorFlow) utilizam GPUs transparentemente |
| Harbor | Registry | Armazena imagens seguras; scanning evita vulnerabilidades em produção |
| HermesJMS | Teste de mensageria | Valida filas JMS para aplicações legadas ou microsserviços |
| Velero | Backup DR | Backups diários do cluster e volumes para MinIO S3 |
Fluxo de trabalho recomendado
1. Desenvolvedor faz login no Harbor (via AD) e push de imagem
2. Pipeline CI/CD (GitLab/Jenkins) atualiza deployment no Rancher
3. Calico garante isolamento de namespaces com Network Policies
4. Velero faz backup de todo o cluster para MinIO
5. Workloads de GPU usam operador para acesso transparente às GPUs
6. HermesJMS valida integrações JMS com sistemas externos
🎉 Parabéns! Agora dispõe de uma plataforma empresarial de topo, desde a gestão de identidade até workloads acelerados por GPU e backup resiliente, tudo sobre Ubuntu e software open-source.